package com.atguigu.sparkcore.rdd.tranformsinglevale

import com.atguigu.sparkcore.util.MySparkContextUtil
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * rdd转换-Sample
  * 抽样
  */
object Sample {

  def main(args: Array[String]): Unit = {

    // 获取sparkContext
    val sc = MySparkContextUtil.get(args)

    // 创建rdd
    val list: Array[Int] = Array(10, 20, 30, 40, 50, 60)
    val rdd: RDD[Int] = sc.makeRDD(list, 2)

    // 转换rdd
    /**
      * withReplacement
      * false 是否放回抽样
      * true的话，会有重复
      *
      * fraction：0.5 抽样因数，比例
      *
      * seed：随机数
      *
      * 注意：
      * 如果withReplacement=true,fraction可以大于1
      * 如果withReplacement=false,fraction的值不能大于1
      *
      */
    val result: RDD[Int] = rdd.sample(false, 0.5)

    // 输出
    println(result.collect().mkString(","))

    // 关闭资源
    MySparkContextUtil.close(sc)
  }
}
